#include "interface_switch.h"
#include <QLineEdit>
#include <QLabel>
#include <QVBoxLayout>
#include "mainwindow.h"
#include <QWidget>
#include <QCheckBox>
#include <QPushButton>
#include "usrt_rev.h"
static timer_start_test_info timer_start_test_data;


void timer_start_test_data_init(void)
{
    timer_start_test_data.Hour = 0;
    timer_start_test_data.minute = 0;
    timer_start_test_data.second = 0;
}

/**
 * @brief 初始化用户界面的表格设置
 *
 * 本函数配置用户界面中的QTableWidget，设置其行数和列数，并填充特定的表头内容。
 * 表头内容包括“扫描次数”、“成功次数”、“NG次数”和“串口接收状态”。
 * 此外，还在表格的第二行填充了示例数据“xx”和“正常”状态。
 */
void Item_5_add_interface(void)
{
    // 设置QTableWidget的行数和列数
    set_ui_QTable_xy(2, 6);

    // 设置表头内容
    set_ui_QTable_content(0, 0, "扫描次数");
    set_ui_QTable_content(0, 1, "成功次数");
    set_ui_QTable_content(0, 2, "NG次数");
    set_ui_QTable_content(0, 3, "串口接收状态");
    set_ui_QTable_content(0, 4, "common_adv标定值");
    set_ui_QTable_content(0, 5, "ibeacon_adv标定值");
    // 填充示例数据
    set_ui_QTable_content(1, 0, "xx");
    set_ui_QTable_content(1, 1, "xx");
    set_ui_QTable_content(1, 2, "xx");
    set_ui_QTable_content(1, 3, "正常");
    set_ui_QTable_content(1, 4, "0");
    set_ui_QTable_content_iseditable(1, 4, true);
    set_ui_QTable_content(1, 5, "0");
    set_ui_QTable_content_iseditable(1, 5, true);
}

void Item_67_add_interface(void)
{
    // 设置QTableWidget的行数和列数
    set_ui_QTable_xy(2, 5);

    // 设置表头内容
    set_ui_QTable_content(0, 0, "连接请求次数");
    set_ui_QTable_content(0, 1, "连接成功次数");
    set_ui_QTable_content(0, 2, "连接断开次数");
    set_ui_QTable_content(0, 3, "故障次数");
    set_ui_QTable_content(0, 4, "串口接收状态");

    // 填充示例数据
    set_ui_QTable_content(1, 0, "xx");
    set_ui_QTable_content(1, 1, "xx");
    set_ui_QTable_content(1, 2, "xx");
    set_ui_QTable_content(1, 3, "xx");
    set_ui_QTable_content(1, 4, "正常");
}


void Item_89_add_interface(void)
{
    // 设置QTableWidget的行数和列数
    set_ui_QTable_xy(2, 4);

    // 设置表头内容
    set_ui_QTable_content(0, 0, "测试时间");
    set_ui_QTable_content(0, 1, "连接时间");
    set_ui_QTable_content(0, 2, "断开次数");
    set_ui_QTable_content(0, 3, "串口接收状态");

    // 填充示例数据
    set_ui_QTable_content(1, 0, "xx");
    set_ui_QTable_content(1, 1, "xx");
    set_ui_QTable_content(1, 2, "xx");
    set_ui_QTable_content(1, 3, "正常");
}

void Item_10_add_interface(void)
{
    // 设置QTableWidget的行数和列数
    set_ui_QTable_xy(4, 6);

    // 设置表头内容
    set_ui_QTable_content(0, 0, "测试时间");
    set_ui_QTable_content(1, 0, "xx");
    set_ui_QTable_content(2, 0, "串口接收状态");
    set_ui_QTable_content(3, 0, "正常");

    set_ui_QTable_content(0, 1, "#3-连接时间");
    set_ui_QTable_content(1, 1, "xx");
    set_ui_QTable_content(2, 1, "#3-断开次数");
    set_ui_QTable_content(3, 1, "xx");

    set_ui_QTable_content(0, 2, "#4-连接时间");
    set_ui_QTable_content(1, 2, "xx");
    set_ui_QTable_content(2, 2, "#4-断开次数");
    set_ui_QTable_content(3, 2, "xx");

    set_ui_QTable_content(0, 3, "#5-连接时间");
    set_ui_QTable_content(1, 3, "xx");
    set_ui_QTable_content(2, 3, "#5-断开次数");
    set_ui_QTable_content(3, 3, "xx");

    set_ui_QTable_content(0, 4, "#6-连接时间");
    set_ui_QTable_content(1, 4, "xx");
    set_ui_QTable_content(2, 4, "#6-断开次数");
    set_ui_QTable_content(3, 4, "xx");

    set_ui_QTable_content(0, 5, "#7-连接时间");
    set_ui_QTable_content(1, 5, "xx");
    set_ui_QTable_content(2, 5, "#7-断开次数");
    set_ui_QTable_content(3, 5, "xx");
}

void Item_12_add_interface(void)
{
    // 设置QTableWidget的行数和列数
    set_ui_QTable_xy(2, 8);

    set_ui_QTable_content(0, 0, "SRF 成功次数");
    set_ui_QTable_content(1, 0, "xx");

    set_ui_QTable_content(0, 1, "SRF 失败次数");
    set_ui_QTable_content(1, 1, "xx");

    set_ui_QTable_content(0, 2, "SRR 成功次数");
    set_ui_QTable_content(1, 2, "xx");

    set_ui_QTable_content(0, 3, "SRR 失败次数");
    set_ui_QTable_content(1, 3, "xx");

    set_ui_QTable_content(0, 4, "蓝牙状态：");
    set_ui_QTable_content(1, 4, "xx");

    set_ui_QTable_content(0, 5, "串口接收状态");
    set_ui_QTable_content(1, 5, "正常");

    set_ui_QTable_content(0, 6, "SRF标定值");
    set_ui_QTable_content(1, 6, "0");
    set_ui_QTable_content_iseditable(1, 6, true);
    set_ui_QTable_content(0, 7, "SRR标定值");
    set_ui_QTable_content(1, 7, "0");
    set_ui_QTable_content_iseditable(1, 7, true);
}

/**
 * delt_interface函数用于删除接口相关的操作
 *
 * 该函数内部调用了两个子函数，分别用于关闭用户界面中的QTable组件和初始化Item_5数据信息
 * 这两个操作都是为了清理或准备接口相关的数据和UI状态，从而确保后续的操作可以在一个干净和预定义的状态下进行
 */
void delt_interface(void)
{
    time_ruart_status_start_stop(0, 0);
    time_67_fault_start_stop(0,0);
    // 关闭用户界面中的QTable组件，可能是为了释放资源或者清理UI状态
    set_ui_QTable_close();
    set_pushButton_6_Enabled(false);
    // 初始化Item_5数据信息，这可能涉及到重置或者设置一些数据结构，以便后续的操作可以顺利进行
    Item_5_data_info_init();
    Item_67_data_info_init();
    Item_89_data_info_init();
    Item_10_data_info_init();
    Item_12_data_info_init();
}


void timer_start_test_interface(void)
{
    timer_start_test_data.second++;
    if (60 <= timer_start_test_data.second)
    {
        timer_start_test_data.minute++;
        timer_start_test_data.second = 0;
    }
    if (60 <= timer_start_test_data.minute)
    {
        timer_start_test_data.Hour++;
        timer_start_test_data.minute = 0;
    }
    QString time_str = QString("%1:%2:%3").arg(timer_start_test_data.Hour, 2, 10, QChar('0')).arg(timer_start_test_data.minute, 2, 10, QChar('0')).arg(timer_start_test_data.second, 2, 10, QChar('0'));
    set_ui_QTable_content(1,0,time_str);
}

void timerout_interface(void)
{
    // 根据T_item的值选择相应的操作
    switch (T_item)
    {
    case Item_None:
        // 如果T_item是Item_None，则不执行任何操作
        break;
    case Item_5:
        // 如果T_item是Item_5，则调用Item_5的添加接口函数
        // 在这里可以触发其他逻辑 修改背景颜色
        set_ui_QTable_content(1, 3, "超时5s未收到数据");
        break;
    case Item_6:
    case Item_7:
        // 如果T_item是Item_5，则调用Item_5的添加接口函数
        // 在这里可以触发其他逻辑 修改背景颜色
        set_ui_QTable_content(1, 4, "超时60s未收到数据");
        break;
    case Item_8:
    case Item_9:
        set_ui_QTable_content(1, 3, "超时2分钟未收到数据");
        break;
    case Item_10:
        set_ui_QTable_content(3, 0, "超时2分钟未收到数据");
        break;
    case Item_12:
        set_ui_QTable_content(1, 5, "超时5s未收到数据");
        break;
    default:
        // 对于其他未处理的T_item值，不执行任何操作
        break;
    }
}

void on_pushButton_set_ui_QTable(bool st)
{
    switch (T_item)
    {
    case Item_5:
        set_ui_QTable_content_iseditable(1, 4, st);
        set_ui_QTable_content_iseditable(1, 5, st);
        break;
    case Item_12:
        set_ui_QTable_content_iseditable(1, 6, st);
        set_ui_QTable_content_iseditable(1, 7, st);
        break;
    default:
        break;
    }
}

/**
 * 添加接口函数
 *
 * 根据T_item的类型调用相应的添加接口函数
 * 此函数演示了如何使用switch-case结构来处理不同类型的Item
 * 注意：此函数假设T_item是一个全局变量或在此上下文中已定义
 */
void add_interface(void)
{
    // 根据T_item的值选择相应的操作
    switch (T_item)
    {
    case Item_None:
        // 如果T_item是Item_None，则不执行任何操作
        break;
    case Item_5:
        // 如果T_item是Item_5，则调用Item_5的添加接口函数
        Item_5_QTime_max_init();
        time_ruart_status_start_stop(1, 5*1000);
        Item_5_add_interface();
        break;
    case Item_6:
    case Item_7:
        Item_67_QTime_max_init();
        time_ruart_status_start_stop(1, 60*1000);
        Item_67_add_interface();
        break;
    case Item_8:
    case Item_9:
        Item_89_QTime_max_init();
        time_ruart_status_start_stop(1, 120*1000);
        set_pushButton_6_Enabled(true);
        Item_89_add_interface();
        break;
    case Item_10:
        Item_10_QTime_max_init();
        time_ruart_status_start_stop(1, 120*1000);
        set_pushButton_6_Enabled(true);
        Item_10_add_interface();
        break;
    case Item_12:
        Item_12_QTime_max_init();
        time_ruart_status_start_stop(1, 5*1000);
        Item_12_add_interface();
        break;
    default:
        // 对于其他未处理的T_item值，不执行任何操作
        break;
    }
}
